﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using System.Web;

namespace JPSOFTWARE.BON.Modelos
{
    public class RegistrarProdutosModel
    {
        [Required(ErrorMessage = "Obrigatório.")]
        [HiddenInput(DisplayValue = false)]
        public int IdProduto { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Produto:* ")]
        [StringLength(100, ErrorMessage = "Execedeu número de caracteres.")]
        public string NomeProduto { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(18, ErrorMessage = "Execedeu número de caracteres.")]
        [DataType(DataType.Currency, ErrorMessage = "Valor inválido.")]
        [Display(Name = "Valor unitário:* ")]
        public string ValorUnitario { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Situação:* ")]
        public bool NomeSituacao { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]        
        [Display(Name = "Categoria:* ")]
        public int IdCategoria { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Sub-Categoria:* ")]
        public int IdSubCategoria { get; set; }        
        
        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Distribuidora:* ")]
        public int IdDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Data de alteração:* ")]
        public DateTime DataAlteracao { get; set; }
    }

    public class AlterarProdutosModel
    {
        [HiddenInput(DisplayValue = false)]
        public int IdProduto { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Produto:* ")]
        [StringLength(100, ErrorMessage = "Execedeu número de caracteres.")]
        public string NomeProduto { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Descrição:* ")]
        [StringLength(300, ErrorMessage = "Execedeu número de caracteres.")]
        public string Descricao { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [StringLength(18, ErrorMessage = "Execedeu número de caracteres.")]
        [Display(Name = "Valor unitário:* ")]
        public string ValorUnitario { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Situação:* ")]
        public bool NomeSituacao { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Categoria:* ")]
        public int IdCategoria { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Sub-Categoria:* ")]
        public int IdSubCategoria { get; set; }     

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Distribuidora:* ")]
        public int IdDistribuidora { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Quantidade no estoque:* ")]
        public int QuantidadeEstoque { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Data de alteração:* ")]
        public DateTime DataAlteracao { get; set; }     
    }

    public class TipoBebidasCombo
    {
        public int IdTipoBebida { get; set; }
        public string Nome { get; set; }
    }

    public class ProdutosView
    {
        public int IdProduto { get; set; }

        public int IdDistribuidora { get; set; }

        public string NomeProduto { get; set; }

        public string SubCategoria { get; set; }

        public string Categoria { get; set; }

        public string Cnpj { get; set; }

        public string Distribuidora { get; set; }

        public string Descricao { get; set; }

        public string Endereco { get; set; }        

        public string Email { get; set; }

        public string Bairro { get; set; }

        public string CidadeDistribuidora { get; set; }

        public string EstadoDistribuidora { get; set; }

        public string CEP { get; set; }

		public string Telefone { get; set; }

		public string Celular { get; set; }

        public string Latitude { get; set; }

        public string Longitude { get; set; }        

        public string ValorUnitario { get; set; }        

        public string NomeSituacao { get; set; }

        public string DataAlteracao { get; set; }
    }

    public class Produto
    {
        [Required]
        public int IdProduto { get; set; }

        [Required]
        public int IdSubCategoria { get; set; }                

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Bebida:* ")]
        public string NomeProduto { get; set; }
    }

    public class Categoria
    {
        private List<SubCategoria> _subCategoria = new List<SubCategoria>();
        public List<SubCategoria> subCategoria { get { return _subCategoria; } }

        private List<Produto> _bebida = new List<Produto>();
        public List<Produto> bebida { get { return _bebida; } }

        [HiddenInput(DisplayValue = false)]
        public int IdCategoria { get; set; }

        [Required(ErrorMessage = "Obrigatório.")]
        [Display(Name = "Categoria:* ")]
        public string NomeCategoria { get; set; }        
    }

    public class SubCategoria
    {        
        public int IdSubCategoria { get; set; }        
        public virtual Categoria Categoria { get; set; }
        public string NomeSubCategoria { get; set; }
    }
}
